hive on spark 调优

您所在的位置:网站首页 hive on spark 配置 hive on spark 调优

hive on spark 调优

2023-04-13 15:23| 来源: 网络整理| 查看: 265

https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81572016

hive on spark 性能远比hive on mr 要好,而且提供了一样的功能。用户的sql无需修改就可以直接运行于hive on spark。 udf函数也是全部支持。本文主要是想讲hive on spark 在运行于yarn模式的情况下如何调优。下文举例讲解的yarn节点机器配置,假设有32核,120GB内存。

1. yarn配置

yarn.nodemanager.resource.cpu-vcores和yarn.nodemanager.resource.memory-mb,这两个参数决定这集群资源管理器能够有多少资源用于运行yarn上的任务。 这两个参数的值是由机器的配置及同时在机器上运行的其它进程共同决定。本文假设仅有hdfs的datanode和yarn的nodemanager运行于该节点。

1.1 配置cores

基本配置是datanode和nodemanager各一个核,操作系统两个核,然后剩下28核配置作为yarn资源。也即是

yarn.nodemanager.resource.cpu-vcores=28 1.2 配置内存

对于内存,预留20GB给操作系统,datanode,nodemanager,剩余100GB作为yarn资源。也即是

yarn.nodemanager.resource.memory-mb=100*1024 2. spark配置

给yarn分配资源以后,那就要想着spark如何使用这些资源了,主要配置对象:execurtor 和driver内存,executro配额,并行度

2.1 executor内存

设置executor内存需要考虑如下因素:

 executor内存越多,越能为更多的查询提供map join的优化。由于垃圾回收的压力会导致开销增加。  某些情况下hdfs的 客户端不能很好的处理并发写入,所以过多的核心可能会导致竞争。

为了最大化使用core,建议将core设置为4,5,6(多核心会导致并发问题,所以写代码的时候尤其是静态的链接等要考虑并发问题)具体分配核心数要结合yarn所提供的核心数。 由于本文中涉及到的node节点是28核,那么很明显分配为4的化可以被整除,spark.executor.cores设置为4 不会有多余的核剩下,设置为5,6都会有core剩余。 spark.executor.cores=4,由于总共有28个核,那么最大可以申请的executor数是7。总内存处以7,也即是 100/7,可以得到每个executor约14GB内存。要知道 spark.executor.memory 和spark.executor.memoryOverhead 共同决定着 executor内存。建议 spark.executor.memoryOverhead占总内存的 15%-20%。 那么最终 spark.executor.memoryOverhead=2 G 和spark.executor.memory=12 G

根据上面的配置的化,每个主机就可以申请7个executor,每个executor可以运行4个任务,每个core一个task。那么每个task的平均内存是 14/4 = 3.5GB。在executor运行的task共享内存。 其实,executor内部是用newCachedThreadPool运行task的。确保 spark.executor.memoryOverhead和 spark.executor.memory的和不超过yarn.scheduler.maximum-allocation-mb !!!

2.2 driver内存

对于drvier的内存配置,也包括两个参数:

spark.driver.memoryOverhead 每个driver能从yarn申请的堆外内存的大小。 spark.driver.memory 当运行hive on spark的时候,每个spark driver能申请的最大jvm 堆内存。该参数结合 spark.driver.memoryOverhead共同决定着driver的内存大小。

driver的内存大小并不直接影响性能,但是也不要job的运行受限于driver的内存. 这里给出spark driver内存申请的方案,假设yarn.nodemanager.resource.memory-mb是 X。

driver内存申请12GB,假设 X > 50GB driver内存申请 4GB,假设 12GB < X


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3